/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#ifndef INCLUDE_SHADER_BINDING_ID
#define INCLUDE_SHADER_BINDING_ID


#define DEF_GPUlayout_Color 3
#define DEF_GPUlayout_Gradient 6

#define DEF_BINDING_topLAS			0

/***************** 集合0 ******************/

#define DEF_BINDING_PROJECT			0
#define DEF_BINDING_WIDGET_PROP		1
#define DEF_BINDING_WIDGET_MATRIX	2




/***************** 集合1 ******************/
#define DEF_ObMeshBindID		3
#define DEF_MaterialsBindID		4


#define DEF_BINDING_WIDGET_Color	  3
#define DEF_BINDING_WIDGET_CurvePoint 4
#define DEF_BINDING_WIDGET_CurveIndex 5
#define DEF_BINDING_WIDGET_TexProp	  6 
#define DEF_BINDING_WIDGET_Texture    10 
#define DEF_BINDING_Ray_ObMesh        11 
#define DEF_BINDING_WIDGET_LineProp   12 
#define DEF_BINDING_WIDGET_TextureID  13 

#define DEF_BINDING_TasterBindID_MeshAtt     19




/***************** 集合2 ******************/
#define DEF_BindID_GlobalTextAtt        0

#define DEF_BindID_TextureCube          11
#define DEF_BindID_TextureShadow        1
#define DEF_BindID_TexCubeShadow        9
#define DEF_BindID_GBufferImage         12
#define DEF_BindID_CompositingShadow    13
#define DEF_BindID_RenderTex0           14
#define DEF_BindID_RenderTex1           15
#define DEF_BindID_RenderTex2           16

#define DEF_BindID_TexShadow_LightIndex  4
#define DEF_BindID_TexShadow_PVMatrix    5

#define DEF_BindID_TexShadow_AreaLight      3
#define DEF_BINDING_TasterBindID_MaterialID 20







#define DEF_TexturesBindID				10
#define DEF_TasterTexturesBindID_rgba8	10

#define DEF_TexturesBindID_r_f			11
#define DEF_TexturesBindID_r_i			12
#define DEF_TexturesBindID_r_ui			13

#define DEF_TasterTexturesBindID_rgba32f	11
#define DEF_TasterTexturesBindID_rgba32ui	12
#define DEF_TasterTexturesBindID_r32ui		13

#define DEF_TasterImageBindID_r_i32			12


#define DEF_TasterImageBindID_r_f32			14
#define DEF_ImageBindID_r_f32				14




#define DEF_BINDING_LineProp           15

#define DEF_BINDING_WIDGET_CurvePick   16
#define DEF_BINDING_WIDGET_CurvePickID 17
#define DEF_BINDING_WIDGET_TextCoordID 18
#define DEF_BINDING_WIDGET_TextCoord   19
#define DEF_BINDING_WIDGET_IcoCoord    20

#define DEF_BINDING_LocationBindID_Vert      7
#define DEF_BINDING_LocationBindID_FaceAttr	 10
#define DEF_BINDING_LocationBindID_RotMat    16

#define DEF_BINDING_TasterBindID_TexCoord    6
#define DEF_BINDING_TasterBindID_TexIndex    7
#define DEF_BINDING_TasterBindID_Face        8
#define DEF_TasterBindID_AlphaListCount      24

#define DEF_BINDING_TasterBindID_Origin		 18


//#define DEF_BINDING_TasterBindID_PrimitiveID 27


#define DEF_BINDING_Render_Image            1
#define DEF_BINDING_Render_Camera           2
//#define DEF_BINDING_RayInstanceMaterialID   3
#define DEF_BINDING_Render_Geom             21
#define DEF_BINDING_Render_GlobalParam      22
#define DEF_BINDING_ObMesh					23

#define DEF_BINDING_RayIntersection         30
#define DEF_BINDING_RayIntersectionDis      31
#define DEF_BINDING_RayDirection            32
#define DEF_BINDING_RayOrigin               33
#define DEF_BINDING_RayLength               34

#define DEF_BINDING_RayArrayTexturesBindID	35
#define DEF_BINDING_RayTexturesWriteLayers	36


#define DEF_BINDING_MeshFaceID				23
#define DEF_BINDING_Face_AdjacencyID_BindID	36
#define DEF_BINDING_Face_Normal_BindID		37
#define DEF_BINDING_Face_Center_BindID		40

#define DEF_BINDING_Face_AttrIndex			42
#define DEF_BINDING_Material_AttrIndex		43


#define DEF_BINDING_Bones_Focus        44

#define DEF_BINDING_Bones_Props        45
#define DEF_BINDING_Bones_Map          46
#define DEF_BINDING_Bones_Matrix       47
#define DEF_BINDING_Bones_Weigth       48




#define DEF_BINDING_Text        50
#define DEF_BINDING_WordsCoord  51



#define DEF_MESH_LINE_TRANFORMTYPEMODEL_NONE             0
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_NBILLBOARD       1    //广告牌
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_VERTICAL         2    //纵向垂直
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_GAZE             3    //镜头注视
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_CenterZoom       4    //中心旋转
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_AxialZoom        5    //轴向缩放
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_ZAxialZoom       6    //轴向缩放
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_CAMERAGAZE       7    //摄像机注视
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_PointLink	     8    //两点链接
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_NormalToWeigth   9    //法线转权重
#define DEF_MESH_LINE_TRANFORMTYPEMODEL_Cylinder         10   //圆柱变换
#define DEF_MESH_TRANFORMTYPE_Mark                       11   //标示

//网格变换模式
#define DEF_MESH_Tranform_NONE          0
//不随物体变换
#define DEF_MESH_Tranform_Independent   1
//保持视口大小
#define DEF_MESH_Tranform_ViewSize      2


#define DEF_ObType_Mesh              1
#define DEF_ObType_Particle          2
#define DEF_ObType_Ligth             3

#define DEF_ObType_Ligth_Parallel    4
#define DEF_ObType_Ligth_Point       5
#define DEF_ObType_Ligth_Area        6
#define DEF_ObType_Ligth_Spot        7

#define DEF_ObType_Ligth_RectArea    8
#define DEF_ObType_Ligth_CircleArea  9




/*************************** 纹理参数采样器类型 **************************/
#define DEF_ObType_SamplerType_None      0
#define DEF_ObType_SamplerType_2DArray   1
#define DEF_ObType_SamplerType_CubeArray 2




/*************************** 后期合成 几何缓存布局ID **************************/

#define DEF_GBuffer_Color    0
#define DEF_GBuffer_Vert     0
#define DEF_GBuffer_Normal   1
#define DEF_GBuffer_Depth    2


/*************************** 相机矩阵类型ID **************************/
#define DEF_Camera_Matrix_PV      0
#define DEF_Camera_Matrix_Rot     1
#define DEF_Camera_Matrix_Porj    2
#define DEF_Camera_Matrix_View    3



#endif //INCLUDE_SHADER_BINDING_ID
